/*!
 @header
 @abstract 格式验证工具类，包括了航班号、航空公司二字码、机场三字码、城市三字码、email、身份证号码、
 手机号码、office号、pnr号、电子客票号、常旅客卡号、舱位的验证和一个通用的验证方法
 @author chenlang, 15-06-25 14:06:40
 
 @version 1.0
 */
#import <Foundation/Foundation.h>

/*!
 @class
 @abstract 格式验证工具类
 */
@interface TMTRegexKit : NSObject

/*!
 @method
 @abstract 航班号格式验证
 @discussion 验证规则:前面两位是字母或者字母和数字的组合（不能全为数字）、中间3到4位数字，如果有后缀，则后缀为字母
 
 
 @param flightNumber 被验证的航班号
 
 @return YES/NO 被验证的航班号是否符合规则
 */
+ (BOOL)isFlightNumberValid:(NSString *)flightNumber;

/*!
 @method
 @abstract 航空公司二字码格式验证
 @discussion 验证规则:二位的字母或者字母和数字的组合，不能全为数字
 

 @param airlineCode 被验证的二字码
 
 @return YES/NO 被验证的二字码是否符合规则
 */
+ (BOOL)isAirlineCodeValid:(NSString *)airlineCode;

/*!
 @method
 @abstract 机场三字码格式验证
 @discussion 验证规则:由3个英文（大写）字母组成，不允许有数字
 
 
 @param code 被验证的机场或者城市三字码
 
 @return YES/NO 被验证的三字码是否符合规则
 */
+ (BOOL)isAirportCodeVaild:(NSString *)code;

/*!
 @method
 @abstract 城市三字码格式验证
 @discussion 验证规则:由3个英文（大写）字母组成，不允许有数字
 
 
 @param cityCode 被验证的城市三字码
 
 @return YES/NO 被验证的城市三字码是否符合规则
 */
+ (BOOL)isCityCodeVaild:(NSString *)cityCode;

/*!
 @method
 @abstract email地址格式验证
 @discussion 验证规则:以[A-Za-z0-9]的字母开始，包含@符号，@符号后面跟2到3位字母或者数字，包含.符号，.符号后面跟2到3位字母
 
 
 @param email 被验证的email地址
 
 @return YES/NO 被验证的email地址是否符合规则
 */
+ (BOOL)isEmailValid:(NSString *)email;

/*!
 @method
 @abstract 身份证号验证
 @discussion 验证规则:以1-9的数字开头，后面跟13-16位的数字，然后跟1位的数字或者字母
 
 
 @param idNumber 被验证的身份证号
 
 @return YES/NO 被验证的身份证号是否符合规则
 */
+ (BOOL)isIdentityCardNumberVaild:(NSString *)idNumber;

/*!
 @method
 @abstract 手机号码验证
 @discussion 验证规则:以数字1开头，第二位数字为3、5、7、8这4个数字之一，后跟9位0-9的数字
 
 
 @param phoneNumber 被验证的手机号码
 
 @return YSE/NO 被验证的手机号码是否符合规则
 */
+ (BOOL)isCellPhoneNumberVaild:(NSString *)phoneNumber;

/*!
 @method
 @abstract 固定电话号码格式验证
 @discussion 验证规则:区号+电话号码+分机号，区号以数字0开头，后面跟2到3位数字(0-9),电话号码
             第一位为数字2-9中的一位，后面跟6到7位数字(0-9),分机号：1到4位数字(0-9)
 
 
 @param phoneNumber 被验证的电话号码
 
 @return YES/NO 固话的号码是否符合规则
 */
+ (BOOL)isTelephonePhoneNumberVaild:(NSString *)phoneNumber;

/*!
 @method
 @abstract office号验证
 @discussion 验证规则:前面三位为字母，后面三位为数字(0-9)
 
 
 @param office 被验证的office号
 
 @return YES/NO 被验证的office号是否符合规则
 */
+ (BOOL)isOfficeNumberVaild:(NSString *)office;

/*!
 @method
 @abstract 验证pnr号
 @discussion 验证规则:6位字母和数字的组合，可以全是字母，但不能全是数字
 
 
 @param pnrNumber 被验证的pnr号
 
 @return YES/NO 被验证的pnr号是否符合规则
 */
+ (BOOL)isPnrNumberVaild:(NSString *)pnrNumber;

/*!
 @method
 @abstract 验证电子客票号
 @discussion 验证规则：13为数字(0-9)
 
 
 @param ticket 被验证的电子客票号
 
 @return YES/NO 被验证的电子客票号是否符合规则
 */
+ (BOOL)isElectronicTicketVaild:(NSString *)ticket;

// TODO:这里的验证规则真的对吗？
/*!
 @method
 @abstract 常旅客卡号验证
 @discussion 验证规则:2到20位的字母和数字的组合
 
 
 @param cardNumber:被验证的常旅客卡号
 
 @return YES/NO 被验证的常旅客卡和是否符合规则
 */
+ (BOOL)isFrequentFlyerCardNumberVaild:(NSString *)cardNumber;

/*!
 @method
 @abstract 舱位验证
 @discussion 验证规则:1位字母或者1位字母+1位数字(0-9)
 
 
 @param cabin 被验证的舱位代码
 
 @return YES/NO 被验证的舱位代码是否符合规则
 */
+ (BOOL)isCabinVaild:(NSString *)cabin;

/*!
 @method
 @abstract 通用的验证方法
 @discussion 需要传入被验证的对象和验证的格式
 
 
 @param object 被验证的对象
 @param regex  验证规则
 
 @return YES/NO 被验证的对象是否符合验证规则
 */
+ (BOOL)isObject:(id)object matchRegex:(NSString *)regex;

@end
